﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;
using System.Data.Entity.ModelConfiguration.Conventions;
using System.Data.Metadata.Edm;
using System.Data.SqlClient;
using System.Data;


namespace SoftHotel.Models
{
    public class SedeDAO : DbContext
    {
        private Conexion conexionBD = new Conexion();
        public DbSet<Sede> sedes { get; set; }
        public DbSet<Parametro> Parametros { get; set; }

        public SedeDAO(): base("conexionPrincipalDAO")
        {
        }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Entity<Sede>().ToTable("Sede");
            modelBuilder.Entity<Parametro>().ToTable("Parametro");
        }

        public void RegistrarSede(Sede sede)
        {
            string consulta = "";

            consulta = "INSERT INTO SEDE (nombre, tipo, categoria, pisos, departamento, provincia, direccion, telefono, descripcion, estado)" +
                        "VALUES (@nombre, @tipo, @categoria, @pisos, @departamento, @provincia, @direccion, @telefono, @descripcion, @estado)";

            SqlCommand command = new SqlCommand();
            conexionBD.AbrirConexion();
            command = conexionBD.connection.CreateCommand();
            command.CommandText = consulta;

            //Se complenta atributos generados por defecto para cualquier ambiente 
            sede.departamento = 0;
            sede.provincia = 0;
            sede.estado = 56;

            command.Parameters.Add("@nombre", SqlDbType.VarChar, 50).Value = sede.nombre;
            command.Parameters.Add("@tipo", SqlDbType.Int).Value = sede.tipo;
            command.Parameters.Add("@categoria", SqlDbType.Int).Value = sede.categoria;
            command.Parameters.Add("@pisos", SqlDbType.Int).Value = sede.pisos;
            command.Parameters.Add("@departamento", SqlDbType.Int).Value = sede.departamento;
            command.Parameters.Add("@provincia", SqlDbType.Int).Value = sede.provincia;
            command.Parameters.Add("@direccion", SqlDbType.VarChar, 50).Value = sede.direccion;
            command.Parameters.Add("@telefono", SqlDbType.VarChar, 30).Value = sede.telefono;
            command.Parameters.Add("@descripcion", SqlDbType.VarChar, 150).Value = sede.descripcion;
            command.Parameters.Add("@estado", SqlDbType.Int).Value = sede.estado;

            conexionBD.EjecutarComando2(command);
        }

        public Sede consultar_sede(string id)
        {
            String consulta = "";
            consulta = "SELECT idSede, nombre, tipo, categoria, pisos, departamento, provincia, direccion, telefono, descripcion, estado FROM SEDE WHERE idSede = \'" + id + "\'";
            conexionBD.AbrirConexion();
            SqlDataReader dataReader = conexionBD.EjecutarReader(consulta);

            Sede sede = new Sede();
            while (dataReader != null && dataReader.Read())
            {
                sede.idSede = Convert.ToInt32(dataReader[0].ToString());
                sede.nombre = dataReader[1].ToString();
                sede.tipo = Convert.ToInt32(dataReader[2].ToString());
                sede.categoria = Convert.ToInt32(dataReader[3].ToString());
                sede.pisos = Convert.ToInt32(dataReader[4].ToString());
                sede.departamento = Convert.ToInt32(dataReader[5].ToString());
                sede.provincia = Convert.ToInt32(dataReader[6].ToString());
                sede.direccion = dataReader[7].ToString();
                sede.telefono = dataReader[8].ToString();
                sede.descripcion = dataReader[9].ToString();
                sede.estado = Convert.ToInt32(dataReader[10].ToString());
            }

            dataReader.Close();
            conexionBD.CerrarConexion();
            return sede;
        }
    }
}